<html>
<head>
  <title>bat批处理</title>
  <basefont face="微软雅黑" size="2" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="exporter-version" content="Evernote Windows/307027 (zh-CN, DDL); Windows/6.1.0 (Win32);"/>
  <style>
    body, td {
      font-family: 微软雅黑;
      font-size: 10pt;
    }
  </style>
</head>
<body>
<a name="666"/>
<h1>bat批处理</h1>

<div>
<span><div><a href="http://www.cnblogs.com/mq0036/p/3412171.html" style="font-weight: bold; font-size: 16pt; color: rgb(28, 51, 135);">http://www.cnblogs.com/mq0036/p/3412171.html</a></div><div><font style="font-size: 16pt; color: rgb(28, 51, 135);"><b>常用批处理内部命令简介</b></font></div><div><span style="font-weight: bold;">批处理定义：顾名思义，批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件，其扩展名为BAT或者CMD。这些命令统称批处理命令。</span></div><div><span style="font-weight: bold;">小知识：可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。</span></div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><br/></span></div><div><hr/><span style="-en-paragraph: true;"><br/></span></div><div><span style="font-weight: bold;"><font style="font-size: 14pt;">目录</font></span></div><div>批处理的常见命令（未列举的命令还比较多，请查阅帮助信息）</div><div>     1、REM 和 ::</div><div>     2、ECHO 和 @</div><div>     3、PAUSE</div><div>     4、ERRORLEVEL</div><div>     5、TITLE</div><div>     6、COLOR</div><div>     7、mode 配置系统设备</div><div>     8、GOTO 和 :</div><div>     9、FIND</div><div>     10、START</div><div>     11、assoc 和 ftype</div><div>     12、pushd 和 popd</div><div>     13、CALL</div><div>     14、shift</div><div>     15、IF</div><div>     16、setlocal 与 变量延迟</div><div>     17、ATTRIB  显示或更改文件属性</div><div><hr/><span style="-en-paragraph: true;"><span style="font-weight: bold;"><br/></span></span></div><div><span style="-en-paragraph: true;"><span style="font-weight: bold;"><font style="font-size: 14pt;">介绍命令</font></span></span></div><div><span style="-en-paragraph: true;"><br/></span><span style="font-weight: bold;">1、REM 和 ::</span></div><div><b>REM为注释命令，一般用来给程序加上注解</b>，该命令后的内容不被执行，但能回显。</div><div>其次, :: 也可以起到rem 的注释作用, 而且更简洁有效; 但有两点需要注意：</div><div>第一, 任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。</div><div>有效标号：冒号后紧跟一个以字母数字开头的字符串，goto语句可以识别。</div><div>无效标号：冒号后紧跟一个非字母数字的一个特殊符号，goto无法识别的标号，可以起到注释作用，所以 :: 常被用作注释符号，其实 :+ 也可起注释作用。</div><div>第 二, 与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中。</div><div><br/></div><div>行内注释格式：%注释内容%  （不常用，慎用）</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">2、ECHO 和 @</span></div><div><ul><li>打开回显或关闭回显功能<span style="line-height: 1.45;">    格式:echo [{ on|off }]</span></li><li>显示当前ECHO设置状态<span style="line-height: 1.45;">    格式:echo</span></li><li>输出提示信息                <span style="line-height: 1.45;">    格式：ECHO 信息内容</span></li><li>关闭DOS命令提示符</li><li>输出空行，即相当于输入一个回车<span style="line-height: 1.45;">  格式：ECHO．</span></li><li>答复命令中的提问             格式：ECHO 答复语|命令文件名</li><li>建立新文件或增加文件内容 <span style="line-height: 1.45;">格式：ECHO 文件内容&gt;文件名</span></li><li>向打印机输出打印内容或打印控制码    <span style="line-height: 1.45;">格式：ECHO 打印机控制码&gt;;PRN</span></li></ul></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">3、PAUSE</span></div><div>PAUSE，玩游戏的人都知道，暂停的意思</div><div>在这里就是停止系统命令的执行并显示下面的内容。</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">4、errorlevel</span></div><div>程序返回码</div><div>echo %errorlevel%</div><div>每个命令运行结束，可以用这个命令行格式查看返回码</div><div>用于判断刚才的命令是否执行成功</div><div>默认值为0，一般命令执行出错会设 errorlevel 为1</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">5、title</span></div><div>设置cmd窗口的标题</div><div>title 新标题   </div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">6、COLOR</span></div><div>设置默认的控制台前景和背景颜色。</div><div>COLOR [attr]</div><div>  attr        指定控制台输出的颜色属性</div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;">7、mode 配置系统设备</span></div><div>配置系统设备。</div><div>串行口:　　　     MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]</div><div>                                [to=on|off] [xon=on|off] [odsr=on|off]</div><div>                                [octs=on|off] [dtr=on|off|hs]</div><div>                                [rts=on|off|hs|tg] [idsr=on|off]</div><div>设备状态:             MODE [device] [/STATUS]</div><div>打印重定向:　　 MODE LPTn[:]=COMm[:]</div><div>选定代码页:　　 MODE CON[:] CP SELECT=yyy</div><div>代码页状态:　　 MODE CON[:] CP [/STATUS]</div><div>显示模式:　　     MODE CON[:] [COLS=c] [LINES=n]</div><div>击键率:　             MODE CON[:] [RATE=r DELAY=d]</div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;">8、GOTO 和 :</span></div><div>GOTO会点编程的朋友就会知道这是跳转的意思。</div><div>在批处理中允许以“:XXX”来构建一个标号，然后用GOTO XXX跳转到标号:XXX处，然后执行标号后的命令。</div><div>例：</div><div>if {%1}=={} goto noparms</div><div>if &quot;%2&quot;==&quot;&quot; goto noparms</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">9、find</span></div><div>在文件中搜索字符串。</div><div>FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] &quot;string&quot; [[drive:][path]filename[ ...]]</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">10、start 命令</span></div><div>批处理中调用外部程序的命令（该外部程序在新窗口中运行，批处理程序继续往下执行，不理会外部程序的运行状况），如果直接运行外部程序则必须等外部程序完成后才继续执行剩下的指令</div><div>例：start explorer d:\</div><div>调用图形界面打开D盘</div><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">11、assoc 和 ftype</span></div><div>文件关联</div><div>assoc 设置'文件扩展名'关联，关联到'文件类型'</div><div>ftype 设置'文件类型'关联，关联到'执行程序和参数'</div><div>当你双击一个.txt文件时，windows并不是根据.txt直接判断用 notepad.exe 打开</div><div>而是先判断.txt属于 txtfile '文件类型'</div><div>再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1</div><div>可以在&quot;文件夹选项&quot;→&quot;文件类型&quot;里修改这2种关联</div><div>assoc           #显示所有'文件扩展名'关联</div><div>assoc .txt      #显示.txt代表的'文件类型'，结果显示 .txt=txtfile</div><div>assoc .doc      #显示.doc代表的'文件类型'，结果显示 .doc=Word.Document.8</div><div>assoc .exe      #显示.exe代表的'文件类型'，结果显示 .exe=exefile</div><div>ftype           #显示所有'文件类型'关联</div><div>ftype exefile   #显示exefile类型关联的命令行，结果显示 exefile=&quot;%1&quot; %*</div><div>assoc .txt=Word.Document.8</div><div>设置.txt为word类型的文档，可以看到.txt文件的图标都变了</div><div>assoc .txt=txtfile</div><div>恢复.txt的正确关联</div><div><br/></div><div>ftype exefile=&quot;%1&quot; %*</div><div>恢复 exefile 的正确关联</div><div>如果该关联已经被破坏，可以运行 <a href="http://command.com/">command.com</a> ，再输入这条命令</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">12、pushd 和 popd</span></div><div>切换当前目录</div><div>@echo off</div><div>c: &amp; cd\ &amp; md mp3       #在 C:\ 建立 mp3 文件夹</div><div>md d:\mp4               #在 D:\ 建立 mp4 文件夹</div><div>cd /d d:\mp4            #更改当前目录为 d:\mp4</div><div>pushd c:\mp3            #保存当前目录，并切换当前目录为 c:\mp3</div><div>popd                    #恢复当前目录为刚才保存的 d:\mp4</div><div>一般用处不大，在当前目录名不确定时，会有点帮助。</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">13、CALL</span></div><div>CALL命令可以在批处理执行过程中调用另一个批处理，当另一个批处理执行完后，再继续执行原来的批处理</div><div>CALL command</div><div>调用一条批处理命令，和直接执行命令效果一样，特殊情况下很有用，比如变量的多级嵌套，见教程后面。在批处理编程中，可以根据一定条件生成命令字符串，用call可以执行该字符串，见例子。</div><div>CALL [drive:][path]filename [batch-parameters]</div><div>调用的其它批处理程序。filename 参数必须具有 .bat 或 .cmd 扩展名。</div><div>CALL :label arguments</div><div>调用本文件内命令段，相当于子程序。被调用的命令段以标签:label开头</div><div>以命令goto :eof结尾。</div><div>另外，批脚本文本参数参照(%0、%1、等等)已如下改变:</div><div>     批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)</div><div>     批参数(%n)的替代已被增强。您可以使用以下语法:（看不明白的直接运行后面的例子）</div><div><br/></div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">14、shift</span></div><div>更改批处理文件中可替换参数的位置。</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">15、IF</span></div><div>IF 条件判断语句，语法格式如下：</div><div>IF [NOT] ERRORLEVEL number command</div><div><br/></div><div><br/></div><div><span style="font-weight: bold;">16、setlocal 与 变量延迟</span></div><div>而为了能够感知环境变量的动态变化，批处理设计了变量延迟。简单来说，在读取了一条完整的语句之后，不立即对该行的变量赋值，而会在某个单条语句执行之前再进行赋值，也就是说“延迟”了对变量的赋值。</div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;">17、ATTRIB  显示或更改文件属性</span></div><div>ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[drive:] [path] filename] [/S [/D]]</div><div>  +   设置属性。</div><div>  -    清除属性。</div><div>  R   只读文件属性。</div><div>  A   存档文件属性。</div><div>  S   系统文件属性。</div><div>  H   隐藏文件属性。</div><div><span style="font-weight: bold;"><br/></span></div><div><span style="font-weight: bold;"><font style="font-size: 16pt; color: rgb(28, 51, 135);"><br/></font></span></div><div><span style="font-weight: bold;"><font style="font-size: 16pt; color: rgb(28, 51, 135);"><br/></font></span></div><div><span style="font-weight: bold;"><font style="font-size: 16pt; color: rgb(28, 51, 135);">常用特殊符号</font></span></div><div><hr/></div><div><span style="font-weight: bold;"> </span>   1、@  命令行回显屏蔽符</div><div>    2、%  批处理变量引导符</div><div>    3、&gt;   重定向符</div><div>    4、&gt;&gt;  重定向符</div><div>    5、&lt;、&gt;&amp;、&lt;&amp; 重定向符</div><div>    6、|  命令管道符</div><div>    7、^  转义字符</div><div>    8、&amp;  组合命令</div><div>    9、&amp;&amp; 组合命令</div><div>    10、||  组合命令</div><div>    11、&quot;&quot;  字符串界定符</div><div>    12、, 逗号</div><div>    13、; 分号</div><div>    14、() 括号</div><div>    15、! 感叹号</div><div>    16、批处理中可能会见到的其它特殊标记符: （略）</div><div>        CR(0D) 命令行结束符</div><div>        Escape(1B) ANSI转义字符引导符</div><div>        Space(20) 常用的参数界定符</div><div>        Tab(09) ; = 不常用的参数界定符</div><div>        + COPY命令文件连接符</div><div>        * ? 文件通配符</div><div>        / 参数开关引导符</div><div>        : 批处理标签引导符</div><div><hr/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div><div><br/></div></span>
</div></body></html> 